#pragma once

#include <iostream>
#include <semaphore.h>
class Sem
{
    public:
    Sem(int _init):_initnum(_init)
    {
        sem_init(&_sem,0,_initnum);//初始化信号量的容量   第二个参数的含义0 ->表示线程间通讯 非0->表示进程间的通讯
    }
    //封装信号量的两个原子操作
    void p()
    {
        int n =sem_wait(&_sem);//n为返回值
        (void)n;
    }
    void v()
    {
        int n =sem_post(&_sem);
        (void)n;
    }
    ~Sem()
    {
        sem_destroy(&_sem);
    }
    private:
    sem_t _sem;
    int _initnum;//信号量的容量
};